install.packages("FinTS")
library(FinTS)
help(package="FinTS")
###1.1 资产收益率
#连续福利
exp(0.1)   

10000*exp(0.1*10) ###10年连续复利终值 
10000*(1+0.1/2)^20 
10000*(1+0.1)^10 

10000*exp(-0.1*10)###10年后10000现值 

## example 1.1
#已知对数受益率为4.46%,求简单收益率
100*(exp(4.46/100)-1) 
##假如近三年的简单净收益率为3％，2％，1.5％ ,求年平均收益率平均
((1+0.03)*(1+0.02)*(1+0.015))^(1/3)##几何均值 
exp((log(1+0.03)+log(1+0.02)+log(1+0.015))/3)-1###转化为算术均值 
1/3*(0.03+0.02+0.015)   ##约等于算术均值 



###1.2 资产收益率分布
x=rnorm(1000)
mean(x)
var(x)
sd(x)

install.packages("e1071")
library(e1071)
help(package="e1071")

skewness(x)
kurtosis(x)

###Example 1.2
####daily simple returns
dat=read.table(file="ch1/d-ibmvwewsp6203.txt")
ibmp=dat[,2]*100
mean(ibmp)
sd(ibmp)

skewness(ibmp)
kurtosis(ibmp)
min(ibmp)
max(ibmp)

FinTS.stats(ibmp)

skewness(ibmp)/sqrt(6/length(ibmp))
1-pnorm(3.233447)

##########收益率分布
##标准正态分布 
x=seq(-5,5,length=1000)
curve(dnorm,-5,5)
curve(pnorm,-5,5)   ###标准分布图 
mean(rnorm(10000))
var(rnorm(10000))
sd(rnorm(10000))
#对数正态分布 
curve(dlnorm,-5,5) 
###mixscale 
curve(dnorm,-5,5,col="red")       #画标准正态分布图 
curve(dcauchy,-5,5,col="blue",add=T)#画cauchy分布图 


mixs=function(x){
  a=0.05
  mix=(1-a)*dnorm(x,mean=0,sd=1)+a*dnorm(x,mean=0,sd=4)
}

plot(mixs,-5,5,col="green",add=T)  #画混合分布图 

######### 1.2.5    figure 1.2
setwd("F:/data/ch1")    
dd=read.table(file="m-ibmvwewsp2603.txt")
ibm=dd[,2]
vw=dd[,3]
dates=as.Date(as.character(dd[,1]),format="%Y%m%d")##note Y
par(mfrow=c(2,1))
plot(dates,ibm,type="l")    ##simple return of IBM

ribm=log(1+ibm) 
plot(dates,ribm,type="l")    ###log return of IBM

plot(dates,vw,type="l")    ##simple return of vw

rvw=log(1+vw) 
plot(dates,rvw,type="l")    ###log return of VW
par(mfrow=c(1,1)) 


plot(density(ibm*100))     ##拟合IBM公司股票的经验分布 
plot(function(x) dnorm(x,mean=1.42,sd=6.70),-30,30,col="red",add=T)



#######################exercises 1.1
##原数据为简单净收益率
dstock=read.table(file="d-3stock.txt")
axp=dstock[,2]*100
Cat=dstock[,3]*100
sbux=dstock[,4]*100
###(a) Simple returns  descriptive statistics
FinTS.stats(axp)
FinTS.stats(Cat)
FinTS.stats(sbux)
##(b) transform to log returens ...
axpr=100*log(axp/100+1)
Catr=100*log(Cat/100+1)
sbuxr=100*log(sbux/100+1)

simple2logReturns(axp/100)*100


### d s of log returns
FinTS.stats(axpr)
FinTS.stats(Catr)
FinTS.stats(sbuxr)

#####test if the mean is zero
##总体方差未知，用t test 
t.test(axpr)
t.test(Catr)
t.test(sbuxr)
